// effect routine

last_letter = numletters - 1;
if (last_letter){
if (sub_order < 2){
  letter_perc = letter / last_letter;
  if (sub_order == 1) letter_perc = 1 - letter_perc;
} else if (sub_order < 4){
  my_letter = 2 * letter;
  if (my_letter >= numletters) my_letter = 2 * numletters - my_letter - 2;
  letter_perc = my_letter / last_letter;
  if (sub_order == 3) letter_perc = 1 - letter_perc;
} else {
  letter_perc = frame / lastsubframe;
}
perc = Math.min(1, Math.max(0, 2 * frame / lastsubframe - letter_perc));
} else perc = frame / lastsubframe;
if (reverse_sub_effect == true) perc = 1 - perc;
angle = 44/7 * perc;
tx = Math.cos(angle) * max_delta_z / 10;
tz = Math.sin(angle) * max_delta_z / 5;
if (use_scaling) xscale = yscale = zscale = 1 - Math.sin(angle) / 2;
yrotate = - 360 * perc;
zrotate = - 360 * perc * x_rotations;


